Flutter tonic DartMessageHandler
介绍
tonic 是一个 C++ 工具库,对 DartVM API 进行了一些简化和封装。DartMessageHandler 是 tonic 提供的对 MessageHander 的简化工具类。
DartMessageHandler 本身并涉及 Isolate 内部 MessageHandler 的创建。DartMessageHandler 的主要工作是向 Isolate 的 MessageHandler 注入消息处理回调。
TaskDispatcher
DartMessageHandler 有一个核心成员,task_dispatcher_,是一个高阶函数,其声明为:
using TaskDispatcher = std::function<void(std::function<void(void)>)>;
TaskDispatcher task_dispatcher_;
该函数通过 DartMessageHandler::Initialize 由外界注入。这个函数最终会注入到 MessageHandler 上,在后文会梳理。
先看看 Flutter 中 DartMessageHandler 的使用场景:
- tonic DartState 类中使用了 DartMessageHandler
- DartState 在 Flutter 框架中被广泛使用